数组里面的问题 char str[30] ; str="chinese"合法吗

来源:百度知道 编辑:UC知道 时间:2024/06/19 08:05:43
就是一个数组的初始化声明

不合法!这样才合法:char str[30]="chinese";
或者这样也是可以的
char str[30],*p=str;
p = "chinese";

C语言给字符数组赋值的方法

1、定义的时候直接用字符串赋值
char a[10]="hello";
注意:不能先定义再给它赋值,如char a[10]; a[10]="hello";这样是错误的!
2、对数组中字符逐个赋值
char a[10]={'h','e','l','l','o'};
3、利用strcpy
char a[10]; strcpy(a, "hello");

易错情况:
1、char a[10]; a[10]="hello";//一个字符怎么能容纳一个字符串?况且a[10]也是不存在的!
2、char a[10]; a="hello";//这种情况容易出现,a虽然是指针,但是它已经指向在堆栈中分配的10个字符空间,现在这个情况a又指向数据区中的hello常量,这里的指针a出现混乱,不允许!

不过要注意
char str[30],*p=str;
p = "chinese";
并不能达到给str赋值的目的。

这个我懂
不合法 数组名是一个常数(地址)
不允许再赋值
你可以char str[30]="chinese";
或 char str;
str="chinese" 都是可以的;

不合法!不能够这样给数组赋值!
在C语言中,str只是一个字符指针,你想想也知道:将一个字符串怎么可能赋值给一个指针呢!
如果想将chinese送到数组中去的话,最好用for循环。

同意楼上